package com.llxwz.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.llxwz.dao.TagMapper;
import com.llxwz.entity.DiscussPost;
import com.llxwz.entity.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class TagService {

    @Autowired
    private TagMapper tagMapper;

    public Tag findTagById(int id){
        return tagMapper.selectById(id);
    }

    public List<Tag> findTags(int entityType,int status){
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.eq("entity_type",entityType);
        wrapper.eq("status",status);
        return tagMapper.selectList(wrapper);
    }

    public int getTagRows(String tagName,int entityType){
        QueryWrapper wrapper = new QueryWrapper();
        if (!"null".equals(tagName)){
            wrapper.like("tag_name",tagName);
        }
        if(entityType!=-1){
            wrapper.eq("entity_type",entityType);
        }
        return tagMapper.selectCount(wrapper);
    }

    public List<Tag> getTagList(String tagName,int entityType,int current, int limit){
        QueryWrapper wrapper = new QueryWrapper();
        if (!"null".equals(tagName)){
            wrapper.like("tag_name",tagName);
        }
        if(entityType!=-1){
            wrapper.eq("entity_type",entityType);
        }
        Page<Tag> result = tagMapper.selectPage(new Page<>(current,limit), wrapper);
        return result.getRecords();
    }

    public int updateTagName(int id, String tagName) {
        UpdateWrapper updateWrapper = new UpdateWrapper();
        updateWrapper.eq("id",id);
        updateWrapper.set("tag_name",tagName);
        return tagMapper.update(null,updateWrapper);
    }

    public int updateEntityType(int id, int entityType) {
        UpdateWrapper updateWrapper = new UpdateWrapper();
        updateWrapper.eq("id",id);
        updateWrapper.set("entity_type",entityType);
        return tagMapper.update(null,updateWrapper);
    }

    public int banTag(int id){
        UpdateWrapper updateWrapper = new UpdateWrapper();
        updateWrapper.eq("id",id);
        updateWrapper.set("status",1);
        return tagMapper.update(null,updateWrapper);
    }

    public int unbanTag(int id){
        UpdateWrapper updateWrapper = new UpdateWrapper();
        updateWrapper.eq("id",id);
        updateWrapper.set("status",0);
        return tagMapper.update(null,updateWrapper);
    }

    public int addTag(Tag tag){
        return tagMapper.insert(tag);
    }

}
